clsCoreObj = clsObject:Inherit("clsCoreObj")

-- CoreObj的构造函数，所有子类需在自己的构造函数中调用此函数
function clsCoreObj:__init__()
	if self.__init_tmpvar then
		self[-1] = {} -- 存放obj的临时属性，不需要参与序列化行为
	end
end

-- obj的初始化函数，由管理者负责调用
function clsCoreObj:OnCreate(oci)
    Super(clsCoreObj).OnCreate(self)
	if not oci then return end
    local func
	for key, value in pairs(oci) do
        func = self["Set" .. key]
        if func then func(self, value) end
	end
end

-- obj的析构函数，由管理者负责调用。这里有资源释放逻辑，不调用可能会泄漏
function clsCoreObj:OnDestroy()
    Super(clsCoreObj).OnDestroy(self)
end

-- 注册临时属性，不参与属性序列化操作，生命周期为当前所在场景
function clsCoreObj:RegTmpVar(VarName)
	self.__init_tmpvar = true

	self["Get"..VarName] = function(self)
		return self[-1][VarName]
	end
	self["Set"..VarName] = function(self, Value)
		self[-1][VarName] = Value
	end
end
